package com.igeek.boot.controller;

import com.igeek.boot.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @Author fengqq
 * @Description @ModelAttribute 请求域中变量
 * @Date 2024/8/15  16:15
 */
@Controller
public class ModelController {


    /*
    * 1.@ModelAttribute 在方法上面，默认将方法的返回值放置在请求域中
    * 作用：在同一个请求中 可以将数据放置在请求域中
    *
    *   用法1：@ModelAttribute+有返回值的方法
    *           默认会将返回值类型的类名首字母小写作为key user,（张三）
    *           指定请求域中的key ：@ModelAttribute(value = "key")   user1,（张三）
    *   用法2：@ModelAttribute+无返回值方法+model.addAttribute(key,value)
    * */
    @ModelAttribute
    public User addModelAttribute1(){
        return new User("张三","123");
    }
    @ModelAttribute
    public void addModelAttribute2(Model model){
        model.addAttribute("user2",new User("李四","666"));
    }


    //
    /*
    * 2.@ModelAttribute 在方法的形参列表上面
    * 作用：从请求域中获取数据
    *      @ModelAttribute User user 默认根据类名首字母小写作为key   user
    *      @ModelAttribute(value = "user1") 根据属性value的值作为key  user1
    * */
    @GetMapping("/getModel")
    @ResponseBody
    public User testGetModelAttribute(@ModelAttribute(value = "user2") User user){
        return user;
    }
}
